package top.glkj.hms.service;

import top.glkj.hms.entity.Activity;
import top.glkj.hms.entity.OrderForm;
import top.glkj.hms.entity.Room;
import top.glkj.hms.utils.Result;
import top.glkj.hms.utils.Status;

import java.util.Map;

/**
 * @author : xgl
 * @version : 0.0.1
 * @date :2021/1/7 0:27
 */
public interface OrderService extends BaseService<OrderForm>{
    /**
     * 添加订单
     * @param orderForm 订单
     * @return 结果
     */
    public Result addOrderForm(OrderForm orderForm);

    /**
     * 更新订单
     * @param orderForm 订单
     * @return 订单
     */
    public Result updateOrderForm(OrderForm orderForm);
    /**
     *  分页查询订单
     * @param page 页码
     * @param size 页面大小
     * @return 订单
     */
    public Result getAllOrderFormByPageAndSize(int page,int size);

    /**
     *  分页查询订单
     * @param page 页码
     * @param size 页面大小
     * @return 订单
     */
    public Result getAllOrderFormByPageAndSizeAndStatus(int page, int size, Status status);

    /**
     *  分页查询订单
     * @return 订单
     */
    public Result getAllOrderFormByStatus(Status status);
    /**
     *  分页搜索查询订单
     * @param page 页码
     * @param size 页面大小
     * @param argName 参数名
     * @param value 参数值
     * @return 订单
     */
    public Result getAllOrderFormByPageAndSizeAndArg(int page,int size,String argName,String value);

    /**
     * 分页搜索多条件查询订单
     * @param page 页码
     * @param size 页面大小
     * @param args 参数键值对
     * @return 订单
     */
    public Result getAllOrderFormByPageAndSizeAndArgs(int page, int size, Map<String,String> args);

    /**
     * 保存活动
     * @param activity 活动
     * @return 结果
     */
    public Result saveActivity(Activity activity);

    /**
     * 添加活动
     * @param activity 活动
     * @return 结果
     */
    public Result addActivity(Activity activity);

    /**
     * 更新活动
     * @param activity 活动
     * @return 结果
     */
    public Result updateActivity(Activity activity);

    /**
     * 删除活动
     * @param activity 活动
     * @return 结果
     */
    public Result deleteActivity(Activity activity);

    /**
     * 移除活动
     * @param activity 活动
     * @return 结果
     */
    public Result removeActivity(Activity activity);

    /**
     * 获取活动
     * @param id id
     * @return 结果
     */
    public Result getActivity(long id);

    /**
     * 获取所有活动
     * @return 所有活动
     */
    public Result getAllActivity();

    /**
     * 获取一个活动根据房间
     * @param room 房间
     * @return 房间的活动
     */
    public Result getActivityByRoom(Room room);

    /**
     * 获取所有活动根据房间
     * @param room 房间
     * @return 房间的活动
     */
    public Result getAllActivityByRoom(Room room);

    /**
     * 获取所有活动根据页码和页面大小
     * @param page 页码
     * @param size 页面大小
     * @return 活动
     */
    public Result getAllActivityByPageAndSize(int page,int size);

    /**
     * 获取所有活动根据页码和页面大小
     * @param page 页码
     * @param size 页面大小
     * @param argName 参数名
     * @param valueName 参数值
     * @return 活动
     */
    public Result getAllActivityByPageAndSizeArg(int page,int size,String argName,String valueName);

    /**
     * 获取所有活动根据页码和页面大小
     * @param page 页码
     * @param size 页面大小
     * @param args 搜索参数
     * @return 活动
     */
    public Result getAllActivityByPageAndSizeArgs(int page,int size,Map<String,String> args);

    /**
     * 获取所有订单根据登录用户
     * @return 订单
     */
    public Result getAllOrderByUser();

    /**
     * 添加订单
     * @return 添加订单，根据用户
     */
    public Result addOrderByUser();

    /**
     * 分页获取获取所有执行中数据
     * @param page 页码
     * @param size 大小
     * @return
     */
    Result getAllOrderFormByPageAndSizeIsNotFinnish(int page, int size);

    /**
     * 根据订单号获取订单
     * @param number 订单号
     * @return 订单
     */
    Result getOrderByOrderNumber(String number);
}
